package cn.iocoder.yudao.module.digital.controller.admin.cardkeyproduct.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 卡密商品新增/修改 Request VO")
@Data
public class CardkeyProductSaveReqVO {

    @Schema(description = "是否自定义面值", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "是否自定义面值不能为空")
    private Boolean customDenomination;

    @Schema(description = "商品id", requiredMode = Schema.RequiredMode.REQUIRED, example = "19617")
    private Long id;

    @Schema(description = "商品URI", example = "30055")
    private String entityId;

    @Schema(description = "产品线id", example = "31473")
    private String productLineId;

    @Schema(description = "商品配置id", example = "18170")
    private String configurationId;

    @Schema(description = "商品UPC")
    private String upc;

    @Schema(description = "产品生效日期")
    private LocalDateTime startDate;

    @Schema(description = "产品失效日期")
    private LocalDateTime endDate;

    @Schema(description = "国家地区代码")
    private String locale;

    @Schema(description = "货币", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "货币不能为空")
    private String currencyCode;

    @Schema(description = "商品详细数据")
    private String productDetailData;

    @Schema(description = "来源", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "来源不能为空")
    private Integer source;

    @Schema(description = "CDK编号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "CDK编号不能为空")
    private String productNo;

    @Schema(description = "CDK名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "赵六")
    @NotEmpty(message = "CDK名称不能为空")
    private String productName;

    @Schema(description = "商品描述", example = "你说的对")
    private String productDescription;

    @Schema(description = "最小面额")
    private Integer denominationMin;

    @Schema(description = "最大面额")
    private Integer denominationMax;

    @Schema(description = "商品面值")
    private Integer denominationFixed;

    @Schema(description = "成本", example = "3354")
    private Integer costPrice;

    @Schema(description = "履行方式")
    private String fulfillmentMethod;

    @Schema(description = "备注", example = "随便")
    private String remark;

}